// package关键字：声明当前类所在的包（文件夹）
// com.itheima.abstract2：包名，与Animal类在同一个包中
// 包的作用是组织代码，避免类名冲突
package com.itheima.abstract2;

// public：访问修饰符，表示这个类可以被任何地方访问
// class：关键字，用于定义一个类
// Cat：类名，表示猫这个具体的动物类
// extends Animal：extends关键字表示继承，Cat类继承自Animal抽象类
// 继承的作用：子类可以使用父类的属性和方法，还可以重写父类的抽象方法
// 当子类继承抽象类时，必须重写父类的所有抽象方法
public class Cat extends Animal{ // 类的开始标记
    // @Override：这是一个注解（annotation），标记下面的方法是重写父类的方法
    // 使用@Override注解可以帮助编译器检查方法是否正确重写了父类的方法
    // 如果方法名拼写错误或者参数列表不匹配，编译器会报错
    @Override
    // public：访问修饰符，与父类保持一致
    // void：返回值类型，与父类保持一致
    // cry()：方法名，必须与父类的抽象方法名完全相同
    // 子类必须重写父类的所有抽象方法，否则子类也必须定义为抽象类
    // 这里是实现父类Animal中的抽象方法cry()
    public void cry() { // 方法的开始标记
        // System.out.println()：Java的标准输出语句，用于在控制台打印信息
        // "🐱是喵喵喵的叫~~~"：要打印的字符串内容
        // 这里具体实现了猫的叫声行为
        System.out.println("🐱是喵喵喵的叫~~~");
    } // cry方法结束标记
} // Cat类结束标记
